package com.itfreer.data.general;

import java.util.HashMap;
import java.util.List;

/**
 * 定义基于Map对象的查询条件
 */
public interface IQueryMap {
	
	/**
	 * 获取页面大小
	 * @return
	 */
	int getPageSize();

	/**
	 * 设置页面大小
	 * @param value
	 */
	void setPageSize(int value);

	/**
	 * 获取页面索引
	 * @return
	 */
	int getPageIndex();
	
	/**
	 * 设置页面索引
	 * @param value
	 */
	void setPageIndex(int value);

	/**
	 * 设置是否添加字典的Caption列
	 * 
	 * @param value
	 */
	void setAddCaptionField(boolean value);

	/**
	 * 获取是否添加字典的Caption列
	 * 
	 * @return
	 */
	boolean getAddCaptionField();

	/**
	 * 获取查询字段列表
	 * 
	 * @return
	 */
	String getSelectFields();

	/**
	 * 设置查询字段列表
	 * 
	 * @param selectFields
	 */
	void setSelectFields(String selectFields);

	/**
	 * 获取查询条件
	 * 
	 * @return
	 */
	HashMap<String, Object> getWhereMap();

	/**
	 * 设置查询条件
	 * 
	 * @param whereMap
	 */
	void setWhereMap(HashMap<String, Object> whereMap);

	/**
	 * 获取GroupBy条件
	 * 
	 * @return
	 */
	List<String> getGroupMap();

	/**
	 * 设置GroupBy条件
	 * 
	 * @param groupByString
	 */
	void settGroupMap(List<String> groupMap);

	/**
	 * 获取序排字符串
	 * 
	 * @return
	 */
	HashMap<String, Object> getOrderByMap();

	/**
	 * 设置序排字符串
	 * 
	 * @param orderByMap
	 */
	void setOrderByMap(HashMap<String, Object> orderByMap);

	/**
	 * 获取值缓存数据的key
	 * 
	 * @return
	 */
	int getKey();
	
	/**
	 * 获取SQL
	 * @param owerTable
	 * @return
	 */
	WherePara getSql(ITable owerTable, boolean isAllSelectFiled);
}